package org.stvd.common.aspectj.lang.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Title: Limit
 * @Description: 自定义请求限流注解
 * @author houzx
 * @date 2020年9月10日
 */
@Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Limit {

    /**
     * 获取令牌超时时间
     */
    long timeOut() default 0L;
    
    /**
     * 限流速率，每秒最多产生令牌数
     */
    long produceRate() default 1000L;
    
    /**
     * IP每秒限制请求数量
     */
    long ipLimitCount() default 10L;
}
